version: '3.4'
services:
  weaviate:
    image: weaviate/test-server
    build:
      context: .
      dockerfile: Dockerfile
      target: weaviate
    restart: on-failure:0
    ports:
      - "8080:8080"
      - "6060:6060"
      - "2112:2112"
      - "7101:7101"
      - "50051:50051"
    environment:
      LOG_LEVEL: "debug"
      CONTEXTIONARY_URL: contextionary:9999
      QUERY_DEFAULTS_LIMIT: 20
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      PERSISTENCE_DATA_PATH: "./data"
      DEFAULT_VECTORIZER_MODULE: text2vec-contextionary
      ENABLE_MODULES: text2vec-contextionary,backup-filesystem
      BACKUP_FILESYSTEM_PATH: "/var/lib/backups" 
      PROMETHEUS_MONITORING_ENABLED: 'true'
      PROMETHEUS_MONITORING_GROUP_CLASSES: 'true'
      CLUSTER_GOSSIP_BIND_PORT: "7100"
      CLUSTER_DATA_BIND_PORT: "7101"
      CLUSTER_HOSTNAME: "weaviate-test"
      RAFT_JOIN: "weaviate-test"
      RAFT_BOOTSTRAP_EXPECT: "1"
      ASYNC_INDEXING: ${ASYNC_INDEXING:-false}
      DISABLE_TELEMETRY: true
      DISABLE_RECOVERY_ON_PANIC: true

      # necessary for the metrics tests, some metrics only exist once segments
      # are flushed. If we wait to long the before run is completely in
      # memtables, the after run has some flushed which leads to some metrics
      # diffs in the before and after
      PERSISTENCE_MEMTABLES_FLUSH_DIRTY_AFTER_SECONDS: 2
  contextionary:
    image: semitechnologies/contextionary:en0.16.0-v1.2.1
    ports:
      - "9999:9999"
    environment:
      OCCURRENCE_WEIGHT_LINEAR_FACTOR: 0.75
      EXTENSIONS_STORAGE_MODE: weaviate
      EXTENSIONS_STORAGE_ORIGIN: http://weaviate:8080
